home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 10 / FM Towns Free Software Collection 10.iso / ms_dos / data / wtmr / wtmr.mac < prev    next >
Text File  |  1995-02-13  |  23KB  |  1,024 lines

  1. #=========================================================================
  2. #WTERM マクロプログラム 本体 WTMR.MAC v10.5
  3. #=========================================================================
  4.  
  5. START:
  6. GETID(W$)                    #USER ID番号をW$に格納。固定。
  7. PRINTCR("                AUTO PILOT WTMR.MAC v10.5 START!  by Gako")
  8. PRINTCR("")
  9. PRINTCR("")
  10. PRINTCR("           ようこそ!   ◎◎NetWorkの世界を堪能してね (^o^)v")
  11. PRINTCR("")
  12. TIMED("ON")                    #LOGTIME表示指定。
  13.  
  14. START0:                        #ID,パスワード入力等処理。
  15. SWITCH
  16.     CASE("User-ID  --->")
  17.         SEND("\I\R")
  18.         GOTO(START0)
  19.     CASE("Password --->")
  20.         SEND("\P\R")
  21.         GOTO(START0)
  22.     CASE("ださい-")        #確認リターン。
  23.         SEND("\R")
  24. END
  25. GETS(A$,"』です")            #会員レヴェル取得のため画面をA$に格納。
  26. IFSRCHY(A$,"inner")            #ビギナー会員の場合。
  27.     CHAIN("WTMR_B.MAC$START")
  28. IFSRCHY(A$,"gular")            #レギュラー会員の場合。
  29.     CHAIN("WTMR_R.MAC$START")
  30. CALL(LOOP0)                    #LOOP0内では,R$を設定,CHAT判断フラグ。
  31. SEND("\R")                    #最初のLOGIN確認。
  32. CALL(LOOP0)
  33. LOGOPEN("MAR")                #MAR****.LOG作成。
  34. GETCRTS(M$,"1")                #未読メール確認。
  35. GETCRTS(N$,"2")                #未読会議室発言確認。
  36. C$="C\R"                    #CHAT入りコマンドを格納。切断直前までほぼ固定。
  37. WAIT("")
  38. SEND("DOR OFF\R")            #DOR OFF指定送信。
  39. CALL(LOOP0)
  40. SEND("ESC OFF\R")            #ESC OFF指定送信。
  41. CALL(LOOP0)
  42. SEND("NAP OFF\R")            #NAP OFF指定送信。
  43. CALL(LOOP0)
  44. SEND("SBRP\R")                #READ POINTER保存。
  45. CALL(LOOP0)
  46. X$="WTMR.MAC"                #X$はWTMR_001.MACからの戻り先フラグ。
  47. CHAIN("WTMR_001.MAC$DIR00")    #アップ文書有無の確認,文書書き込みマクロへ。
  48.  
  49. #=========================================================================
  50. AAA:                        #PAD指定処理開始。
  51. S$="MAR.PAD"                #MAR.PADは行動指定ファイル。
  52. E$="/"                        #MAR.PAD内区切り文字。
  53. O$="_"                        #MAR.PAD内区切り文字。
  54. P$="."                        #MAR.PAD内区切り文字。
  55. X$=""                        #戻り先フラグの役割解除。
  56. GETTXUPD(I$)                #I$=G:\WT\UP_TXT\
  57. CAT(B$,I$,S$)                #B$=G:\WT\UP_TXT\MAR.PAD。PAD処理中はB$は固定。
  58. ROPEN(B$,READ0)                #MAR.PADがなければ,READ0へ。
  59. RREAD(A$)                    #MAR.PADから一行,A$へ読み込み。
  60. VSWAP(A$,X$)                #A$とX$を交換。
  61. IFE(X$,"")                    #X$はMAR.PADの一行目,一行伝言。ほぼ固定。
  62.     X$="/E"                    #一行伝言が改行のみの場合は,/Eとする。
  63. CAT(I$,"MAR.WRK")            #I$=G:\WT\UP_TXT\MAR.WRK
  64. WOPEN(I$)                    #MAR.WRK作成。
  65. WCLOSE                        #WAPPENDのために,いったん閉じる。
  66. WAPPEND(I$)                    #MAR.WRKオープン。
  67. WRITE("")                    #一行伝言部分を削除して空白を書き込む。
  68. WCLOSE                        #MAR.WRKを閉じる。
  69.  
  70. #=========================================================================
  71. DAT_:                        #>に戻って,CHATに入るかどうかを決めるルーチン。
  72. D$=""
  73. VSWITCH(R$)                    #LOOP0でR$を設定。
  74.     CASE("C")                #CHATメッセージがあった場合,R$=C。
  75.         CALL(CHAT)            #CHATへ。
  76.         VCLEAR("R")            #CHATから復帰。
  77.         GOTO(DAT1)            #MAR.PADファイル指定読み込みルーチンへ。
  78.     ELSE                    #R$がCでない場合。
  79.         GOTO(DAT1)
  80. END
  81.  
  82. #=========================================================================
  83. DAT1:                        #MAR.PAD内指定読み取りルーチン。
  84. RREAD(A$)                    #MAR.PADから二行目以降をA$へ読み込み。
  85. JUMPE(A$,"",DAT1)            #空白のみの行の場合,DAT1へ戻る。
  86. J$=A$                        #J$はWAPPEND書き込み用変数。
  87. U$=A$
  88. L$=""                        #L$はWTMR_001.MACからの戻り先フラグ。
  89. LEFT(U$,"1")
  90. JUMPE(U$,"#",DAT1)            #「#」で始まるコメント行の場合,DAT1へ戻る。
  91. VSWITCH(A$)
  92.     CASE("SEL")                #MENU SELECTER へ。
  93.         U$="READ"            #U$は移動先フラグ。
  94.         GOTO(DAT3)            #DAT3は,MAR.PAD書換えルーチン。
  95.     CASE("OFF")                #自動一行伝言書き込み終了へ。
  96.         U$="READ2"
  97.         GOTO(DAT3)
  98.     CASE("BYE")                #手動一行伝言書き込み終了へ。
  99.         U$="READ1"
  100.         GOTO(DAT3)
  101.     CASE("PAS")                #未読処理をせずに,MENU SELECTERへ。
  102.         U$="SELECT0"
  103.         GOTO(DAT3)
  104.     ELSE
  105.         GOTO(DAT2)
  106. END
  107.  
  108. #-------------------------------------------------------------------------
  109. DAT2:                        #「/」指定の分岐。
  110. L$="WTMR.MAC"                #WTMR_001.MACから戻り先のフラグ。
  111. IFE(A$,"DLN/")                #最新DLリスト取得指定の場合は,WTMR_001.MACへ。
  112.     CHAIN("WTMR_001.MAC$DLN")
  113. PICKWORD(D$,A$,E$)            #/で区切った内容を分離。
  114. JUMPE(D$,"B",DAT1)            #旧版指定の場合。
  115. JUMPE(D$,"M",DAT1)            #旧版指定の場合。
  116. JUMPE(D$,"C",CHAN3)            #ハンドル名変更指定。
  117. JUMPE(D$,"R",BCREAD)        #BC読み指定。
  118. JUMPE(D$,"W",BCWRIT)        #BC書き指定。
  119. JUMPE(D$,"U",UP)            #UPLOAD指定。
  120. JUMPE(D$,"D",DOWN)            #DWONLOAD指定。
  121. JUMPE(D$,"P",PRO)            #プロフィール取得指定。
  122. IFE(D$,"L",DL_)                #DLリスト取得指定の場合は,WTMR_001.MACへ。
  123.     CHAIN("WTMR_001.MAC$DL_")
  124. IFE(D$,"K",KES)                #発言削除指定の場合は,WTMR_001.MACへ。
  125.     CHAIN("WTMR_001.MAC$KES")
  126. IFE(A$,"",DO)                #直接コマンド入力指定の場合は,WTMR_001.MACへ。
  127.     CHAIN("WTMR_001.MAC$DO")
  128.  
  129. #-------------------------------------------------------------------------
  130. DAT3:                        #MAR.PAD書換えルーチン。
  131. WAPPEND(I$)                    #追加書き込みに,MAR.WRKをオープン。
  132. WRITE(J$)                    #MAR.PAD内容をMAR.WRKに書き込む。
  133.  
  134. DAT4:                        #読み込み行以下をMAR.WRKに書き込むルーチン。
  135. RREAD(J$,DAT5)                #MAR.PADから読み込み。EOFならば,DAT5へ。
  136. WRITE(J$)                    #MAR.WRKに書き込み。
  137. GOTO(DAT4)
  138.  
  139. DAT5:                        #MAR.PAD最終処理ルーチン。
  140. WCLOSE                        #MAR.WRKを閉じる。
  141. RCLOSE                        #MAR.PADを閉じる。
  142. A$=""
  143. CAT(A$,"DEL ",B$)            #A$=DEL G:\WT\UP_TXT\MAR.PAD
  144. CHILD(A$)                    #MAR.PAD削除。
  145. DELAYM(1500)                #同期調整。
  146. CHANGE(B$,"MAR.PAD","MAR.WRK")
  147. A$=""
  148. CAT(A$,"REN ",B$)            #A$=REN G:\WT\UP_TXT\MAR.WRK
  149. CAT(A$," MAR.PAD")            #A$=REN G:\WT\UP_TXT\MAR.WRK MAR.PAD
  150. CHILD(A$)                    #MAR.WRKを,MAR.PADに改名。
  151. DELAYM(1500)                #同期調整。
  152. GOTO(U$)                    #DAT1で格納した移動先へ。
  153.  
  154. #=========================================================================
  155. UP:                            #データアップロード指定。
  156. GETUPD(U$)                    #U$=G:\WT\UP\
  157. Y$=U$
  158. PICKWORD(D$,A$,E$)            #/で区切る。D$は,UPLOAD先DL番号。A$=***.LZH
  159. JUMPE(A$,"",RETRYD)
  160. JUMPE(D$,"",RETRYD)
  161. PICKWORD(K$,A$,P$)            #K$=***,A$=LZH
  162. JUMPE(K$,"",RETRYD)
  163. JUMP<>(A$,"LZH",RETRYD)        #A$がLZHでない場合。
  164. S$=K$
  165. CAT(K$,".GGG")                #K$=***.GGG
  166. CAT(S$,".LZH")                #S$=***.LZH
  167. CAT(U$,K$)                    #U$=G:\WT\UP\***.GGG
  168. CAT(Y$,S$)                    #Y$=G:\WT\UP\***.LZH
  169. JUMPFILEN(U$,RETRYD)            #概要ファイルがない場合。
  170. JUMPFILEN(Y$,RETRYD)            #アップロードファイルがない場合。
  171. SEND("DL\R")                #DLへ。
  172. STIMEOUT(2)
  173. SWITCH
  174.     CASE("◆")
  175.         GOTO(RETRY)            #DLに入る前はRETRYへ。
  176. END
  177. CALL(LOOP0)
  178. SEND(D$)                    #DL番号送信。
  179. SEND("\R")
  180. STIMEOUT(2)
  181. SWITCH
  182.     CASE("◆")
  183.         GOTO(DWMIS)            #DLに入った後はDWMISへ。
  184. END
  185. CALL(LOOP0)
  186. SEND("2\R")                    #UPLOADを選択。
  187. CALL(LOOP0)
  188. SEND("\R")                    #確認。
  189. CALL(LOOP0)
  190. SEND("1\R")                    #バイナリ送信選択。
  191. CALL(LOOP0)
  192. SEND("\R")                    #確認。
  193. CALL(LOOP0)
  194. SEND(S$)                    #UPLOADファイル名送信。
  195. SEND("\R")
  196. STIMEOUT(2)
  197. SWITCH
  198.     CASE("◆")
  199.         GOTO(UPMIS)            "同一名ファイルが存在する場合はUPMISへ。
  200. END
  201. CALL(LOOP0)
  202. SEND("1\R")                    #確認。
  203. CALL(LOOP0)
  204. FOPEN(U$)                    #概要ファイルオープン。
  205. FREAD(F$)                    #概要ファイル一行目格納。TITLE。
  206. LEFT(F$,"26")                #TITLE長調整。
  207. SEND(F$)                    #TILTE送信。
  208. SEND("\R")
  209. CALL(LOOP0)
  210. SEND("\R")                    #TITLE確認。
  211. CALL(LOOP0)
  212. SEND("2\R")                    #概要ファイルのアップロードを選択。
  213. CALL(LOOP0)
  214.  
  215. SEND:
  216. FREAD(F$,EOF)                #発言ファイル読込。続きがない場合。
  217. JUMPE(F$,"/E",EOF)            #/Eがある場合。
  218. CONVERT(OFF)
  219. SEND(F$)                    #発言ファイル内容一行送信。
  220. CONVERT(ON)
  221. SEND("\R")
  222. GOTO(SEND)                    #SENDへ戻る。
  223.  
  224. EOF:
  225. SEND("/E\R")                #概要ファイル送信終了処理。
  226. FCLOSE                        #概要ファイルを閉じる。
  227. CALL(LOOP0)
  228. SEND("\R")                    #修正確認。
  229. CALL(LOOP0)
  230. SEND("1\R")                    #登録確認。
  231. CALL(LOOP0)
  232. SEND("1\R")                    #送信開始確認。
  233. DELAYM(1500)                #同期調整。
  234. UPLOAD(4,S$,ERROR)            #F-Xmodem送信。
  235. DELAYM(500)                    #同期調整。
  236. SEND("\R")                    #調整のための改行送信。
  237. CALL(LOOP0)
  238. SEND("T\R")                    #DLから抜ける。
  239. CALL(LOOP0)
  240. V$="namv -a "
  241. A$=""
  242. CAT(A$,V$,U$)                #U$=G:\WT\UP\***.GGG
  243. Q$=" $(UploadD)DONE\"
  244. CAT(A$,Q$)
  245. CHILD(A$)                    #概要ファイル移動。
  246. CAT(V$,Y$)                    #Y$=G:\WT\UP\***.LZH
  247. CAT(V$,Q$)
  248. CHILD(V$)                    #LZHファイル移動。
  249. VCLEAR("KUVQSY")
  250. GOTO(DAT_)
  251.  
  252. #-------------------------------------------------------------------------
  253. UPMIS:                        #既に同名ファイルが存在する場合の処理。
  254. SEND("ERROR.ERR\R")            #ダミー名送信。
  255. CALL(LOOP0)
  256. SEND("1\R")                    #修正確認(修正しない)。
  257. CALL(LOOP0)
  258. SEND("ERROR\R")                #ダミーのタイトル名,ERROR。
  259. CALL(LOOP0)
  260. SEND("\R")                    #確認。
  261. CALL(LOOP0)
  262. SEND("E\R")                    #送信処理を抜ける。
  263. CALL(LOOP0)
  264. SEND("T\R")                    #DLを抜ける。
  265. CALL(LOOP0)
  266. PRINTCR("□GGGファイルをリネームします□")
  267. A$=""
  268. CAT(A$,"REN ",U$)            #A$=REN G:\WT\UP\UP.GGG
  269. CAT(A$," *.ERR")            #A$=REN G:\WT\UP\UP.GGG *.ERR
  270. CHILD(A$)                    #書き込みエラーファイルの拡張子をERRにリネーム。
  271. DELAYM(1500)                #同期調整。
  272. VCLEAR("KUVQSY")
  273. GOTO(DAT_)
  274.  
  275. #=========================================================================
  276. DOWN:                        #DOWNLOAD指定。
  277. PICKWORD(D$,A$,E$)            #D$はDL番号。A$=23/***.LZH
  278. PICKWORD(H$,A$,E$)            #H$はDOWNLOADデータ番号。A$はデータ名。
  279. JUMPE(A$,"",RETRYD)            #指定ミスの場合。
  280. JUMPE(D$,"",RETRYD)
  281. JUMPE(H$,"",RETRYD)
  282. U$=A$
  283. SEND("DL\R")                #DLへ。
  284. STIMEOUT(2)
  285. SWITCH
  286.     CASE("◆")
  287.         GOTO(RETRY)            #DLに入る前はRETRYへ。
  288. END
  289. CALL(LOOP0)
  290. SEND(D$)                    #DL番号送信。
  291. SEND("\R")
  292. STIMEOUT(2)
  293. SWITCH
  294.     CASE("◆")
  295.         GOTO(DWMIS)            #指定DLに入れない場合。
  296. END
  297. CALL(LOOP0)
  298. SEND("3\R")                    #DOWNLOAD選択。
  299. STIMEOUT(2)
  300. SWITCH
  301.     CASE("◆")
  302.         GOTO(DWMIS)            #DOWNLOAD不可能の場合。
  303. END
  304. CALL(LOOP0)
  305. SEND(H$)                    #DOWNLOADデータ番号送信。
  306. SEND("\R")
  307. STIMEOUT(2)
  308. SWITCH
  309.     CASE("◆")
  310.         GOTO(DWMIS1)        #DOWNLOAD番号エラー。
  311. END
  312. CALL(LOOP0)
  313. SEND("1\R")                    #確認。
  314. CALL(LOOP0)
  315. SEND("1\R")                    #受信方法選択。
  316. DELAYM(4000)                #同期調整。
  317. DOWNLOAD(4,U$,ERROR)        #F-Xmodemによる受信。
  318. DELAYM(500)                    #同期調整。
  319. SEND("\R")                    #同期調整のための改行送信。
  320. CALL(LOOP0)
  321. SEND("T\R")                    #DLを抜ける。
  322. VCLEAR("HU")
  323. CALL(LOOP0)
  324. GOTO(DAT_)
  325.  
  326. #-------------------------------------------------------------------------
  327. DWMIS1:                        #データ番号ミスの場合。
  328. CALL(LOOP0)
  329. SEND("\R")                    #リターン送信で,DOWNLOADを抜ける。
  330.  
  331. DWMIS:                        #DLに入れない場合。DWONLOAD不可能の場合。
  332. CALL(LOOP0)
  333. SEND("T\R")                    #メインプロンプトへ。
  334. CALL(LOOP0)
  335. VCLEAR("HU")
  336. GOTO(DAT_)
  337.  
  338. #=========================================================================
  339. READ0:                        #MAR.PADがない場合,一行伝言を代入。
  340. X$="また来るねぇ~ (^^)/゚"    #READへ合流。
  341.  
  342. READ:                        #DAT1で格納したU$内容による処理。SELECTERへ。
  343. U$="SELECT0"                #U$は未読処理後の移動先フラグ。
  344. GOTO(R1)                    #未読有無確認ルーチンへ。
  345.  
  346. READ1:                        #未読処理終了後,自動伝言入力へ行く設定の場合。
  347. U$="OFF4"
  348. GOTO(R1)
  349.  
  350. READ2:                        #未読処理終了後,手動伝言入力へ行く設定の場合。
  351. U$="OFF1"
  352.  
  353. #-------------------------------------------------------------------------
  354. R1:                            #メール未読確認。
  355. JUMPSRCHN(N$,"あります",R2)    #あります,がない場合,M$の判断へ。
  356. GOTO(READ000)                #あります,があった場合,未読処理へ。
  357.  
  358. R2:                            #メール未読がない場合,会議室未読確認。
  359. JUMPSRCHN(M$,"あります",U$)    #両方未読がない場合,指定ラヴェルへ。
  360.  
  361. #-------------------------------------------------------------------------
  362. READ000:
  363. SEND("/ALL\R")                #/ALLによる未読処理。
  364. CALL(LOOP0)
  365. VSWITCH(R$)                    #CHATメッセージ有無の判断分岐。
  366.     CASE("C")
  367.         CALL(CHAT)            #CHATへ。
  368.         VCLEAR("R")            #CHATから復帰。
  369.         GOTO(U$)            #指定されたラヴェルへ。
  370.     ELSE
  371.         GOTO(U$)
  372. END
  373.  
  374. #=========================================================================
  375. SELECT0:                    #メイン MEMU SELECTER
  376. H$="ボードチャット 2~7+他にも色々できるよ。"
  377. I$="ボードチャット 8~11+GAMEをします。 GAME内は,自由行動です。"
  378. J$="データライブラリに行きます。+ログアウトします。"
  379. SMENU(H$,I$,J$)
  380. VSWITCH(H$)
  381.     CASE("0")
  382.         PRINTCR("          MACRO STOP! SEE YOU AGAIN!  (^o^)/゚")
  383.         EXIT
  384.     CASE("1")
  385.         GOTO(BC1)
  386.     CASE("2")
  387.         GOTO(BC2)
  388.     CASE("3")
  389.         GOTO(DL)
  390.     CASE("4")
  391.         GOTO(ETC)
  392.     CASE("5")
  393.         GOTO(GAME)
  394.     CASE("6")
  395.         GOTO(OFF1)
  396.     ELSE
  397.         GOTO(SELECT0)
  398. END
  399.  
  400. ETC:
  401. H$="各種 RANK表示をします。+もっと,いろいろできるよ。"
  402. I$="誰がアクセスしてるかな?+一行伝言デフォルト内容の確認をします。"
  403. J$="今日はどんな日かな?+一行伝言をデフォルトで入力してログアウトします。"
  404. SMENU(H$,I$,J$)
  405. VSWITCH(H$)
  406.     CASE("0")
  407.         GOTO(SELECT0)
  408.     CASE("1")
  409.         GOTO(ETC01)
  410.     CASE("2")
  411.         Y$="LOG"
  412.         GOTO(ETC1)
  413.     CASE("3")
  414.         Y$="DAY"
  415.         GOTO(ETC1)
  416.     CASE("4")
  417.         GOTO(ETC2)
  418.     CASE("5")
  419.         GOTO(DEF)
  420.     CASE("6")
  421.         GOTO(OFF4)
  422.     ELSE
  423.         GOTO(ETC)
  424. END
  425.  
  426. ETC01:
  427. H$="所有GOLD RANKINGを表示します。+発言回数RANKINGを表示します。"
  428. I$="書き込み率RANKINGを表示します。"
  429. J$="アクセス回数RANKINGを表示します。"
  430. SMENU(H$,I$,J$)
  431. VSWITCH(H$)
  432.     CASE("0")
  433.         GOTO(ETC)
  434.     CASE("1")
  435.         Y$="GRNK"
  436.         GOTO(ETC1)
  437.     CASE("2")
  438.         Y$="RRNK"
  439.         GOTO(ETC1)
  440.     CASE("3")
  441.         Y$="ARNK"
  442.         GOTO(ETC1)
  443.     CASE("4")
  444.         Y$="WRNK"
  445.         GOTO(ETC1)
  446.     ELSE
  447.         GOTO(ETC01)
  448. END
  449.  
  450. ETC2:
  451. H$="50,000GOLD取得者を表示します。+まだまだできるよ。"
  452. I$="ハンドル名を一時的に変更します。+PROFIELを表示します。"
  453. J$="ハンドル名を元に戻します。+自由行動します。"
  454. SMENU(H$,I$,J$)
  455. VSWITCH(H$)
  456.     CASE("0")
  457.         GOTO(SELECT0)
  458.     CASE("1")
  459.         Y$="KING"
  460.         GOTO(ETC1)
  461.     CASE("2")
  462.         Y$="CHAN"
  463.         GOTO(CHAN)
  464.     CASE("3")
  465.         Y$="RHAN"
  466.         GOTO(ETC1)
  467.     CASE("4")
  468.         GOTO(ETC3)
  469.     CASE("5")
  470.         Y$="PROF"
  471.         GOTO(PROF)
  472.     CASE("6")
  473.         GOTO(ETC4)
  474.     ELSE
  475.         GOTO(ETC2)
  476. END
  477.  
  478. ETC3:
  479. H$="規約を読みます。+SYSOPとチャットをします。抜ける時は「/E」を入れてね。"
  480. I$="郵送規約を読みます。+未読ポインター移動を行います。指示通り入力してね。"
  481. J$="会議室とボードチャットの一覧を見ます(MAP)。+未読情報を表示します。"
  482. SMENU(H$,I$,J$)
  483. VSWITCH(H$)
  484.     CASE("0")
  485.         GOTO(SELECT0)
  486.     CASE("1")
  487.         Y$="規約"
  488.         GOTO(ETC1)
  489.     CASE("2")
  490.         Y$="郵送"
  491.         GOTO(ETC1)
  492.     CASE("3")
  493.         Y$="MAP"
  494.         GOTO(ETC1)
  495.     CASE("4")
  496.         GOTO(CHATS)
  497.     CASE("5")
  498.         GOTO(HAND)
  499.     CASE("6")
  500.         Y$="B"
  501.         GOTO(ETC0100)
  502.     ELSE
  503.         GOTO(ETC2)
  504. END
  505.  
  506. BC1:
  507. H$="No.2 異次元の部屋+No.5 夢と希望の部屋"
  508. I$="No.3 好き者の部屋+No.6 ギャグの部屋"
  509. J$="No.4 アニメの部屋+No.7 音楽の部屋"
  510. SMENU(H$,I$,J$)
  511. VSWITCH(H$)
  512.     CASE("0")
  513.         GOTO(SELECT0)
  514.     CASE("1")
  515.         ADD(H$,H$,"1")
  516.         GOTO(BCSEND)
  517.     CASE("2")
  518.         ADD(H$,H$,"1")
  519.         GOTO(BCSEND)
  520.     CASE("3")
  521.         ADD(H$,H$,"1")
  522.         GOTO(BCSEND)
  523.     CASE("4")
  524.         ADD(H$,H$,"1")
  525.         GOTO(BCSEND)
  526.     CASE("5")
  527.         ADD(H$,H$,"1")
  528.         GOTO(BCSEND)
  529.     CASE("6")
  530.         ADD(H$,H$,"1")
  531.         GOTO(BCSEND)
  532.     ELSE
  533.         GOTO(BC1)
  534. END
  535.  
  536. BC2:
  537. H$="No. 8 尻取りの部屋+No.11 マルフィーの法則"
  538. I$="No. 9 電脳の部屋"
  539. J$="No.10 TRPGの部屋"
  540. SMENU(H$,I$,J$)
  541. VSWITCH(H$)
  542.     CASE("0")
  543.         GOTO(SELECT0)
  544.     CASE("1")
  545.         ADD(H$,H$,"7")
  546.         GOTO(BCSEND)
  547.     CASE("2")
  548.         ADD(H$,H$,"7")
  549.         GOTO(BCSEND)
  550.     CASE("3")
  551.         ADD(H$,H$,"7")
  552.         GOTO(BCSEND)
  553.     CASE("4")
  554.         ADD(H$,H$,"7")
  555.         GOTO(BCSEND)
  556.     ELSE
  557.         GOTO(BC2)
  558. END
  559.  
  560. #=========================================================================
  561. SELECT_:                    #CHAT信号判断ルーチン。
  562. VSWITCH(R$)
  563.     CASE("C")
  564.         CALL(CHAT)            #CHATへ。
  565.         VCLEAR("R")            #CHATから復帰。
  566.         GOTO(F$)
  567.     ELSE
  568.         GOTO(F$)
  569. END
  570.  
  571. #=========================================================================
  572. CHAN:                        #SELECTERからハンドル名変更の場合。
  573. INPUT(A$,"新しいハンドル名を12バイト以内で入力して下さい。","705.60")
  574. JUMPE(A$,"",DAT1)            #入力が空白のみの場合。
  575. SEND(Y$)                    #CHAN送信。
  576. SEND("\R")
  577. LEFT(A$,"12")                #ハンドル名長調整。
  578. CALL(LOOP0)
  579. CONVERT(OFF)
  580. SEND(A$)                    #ハンドル名送信。
  581. CONVERT(ON)
  582. SEND("\R")
  583. WAIT("\010")
  584. SEND("\R")                    #確認。
  585. VCLEAR("AY")
  586. CALL(LOOP0)
  587. F$="SELECT0"
  588. GOTO(SELECT_)
  589.  
  590. #-------------------------------------------------------------------------
  591. CHAN3:                        #MAR.PAD内ハンドル変更指定の場合。
  592. LEFT(A$,"12")                #A$は入力済ハンドル名。長さを調整。
  593. JUMPE(A$,"",DAT_)            #ハンドル名指定忘れ。
  594. SEND("CHAN\R")
  595. CALL(LOOP0)
  596. CONVERT(OFF)
  597. SEND(A$)                    #新ハンドル名送信。
  598. CONVERT(ON)
  599. SEND("\R")
  600. WAIT("\010")
  601. SEND("\R")                    #確認。
  602. VCLEAR("AY")
  603. CALL(LOOP0)
  604. GOTO(DAT_)
  605.  
  606. #=========================================================================
  607. RHAN:                        #MAR.PAD内の,ハンドル名を元に戻す指定の場合。
  608. SEND("RHAN\R")
  609. CALL(LOOP0)
  610. GOTO(DAT_)
  611.  
  612. #=========================================================================
  613. HAND:                        #SELECTERから,ポインター移動ルーチン。
  614. F$="ETC3"
  615. INPUT(H$,"ポインター移動をする会議室番号を入力して下さい:","705.60")
  616. JUMPE(H$,"",SELECT_)        #入力がない場合。
  617. SEND(H$)                    #会議室番号送信。
  618. SEND("\R")
  619. CALL(LOOP0)
  620. DELAYM(500)                    #同期調整。
  621. GETCRTS(A$,"2")                #会議室移動確認。
  622. JUMPSRCHY(A$,"◆",SELECT_)
  623. INPUT(H$,"移動ポインター数を入力して下さい:","705.60")
  624. JUMPE(H$,"",SELECT_)        #入力がない場合。
  625. SEND("RP ")                    #RPはポインター移動コマンド。
  626. SEND(H$)                    #移動先ポインター数送信。
  627. SEND("\R")
  628. CALL(LOOP0)
  629. DELAYM(500)                    #同期調整。
  630. GOTO(SELECT_)
  631.  
  632. #=========================================================================
  633. PRO:                        #PROFIELEルーチン(PAD指定から)。
  634. JUMPE(A$,"",DAT_)            #表示先ID等指定ミスの場合。
  635. SEND("PROF ")                #PROFIELE表示コマンド。
  636. SEND(A$)                    #表示先ID等送信。
  637. SEND("\R")
  638. CALL(LOOP0)
  639. GOTO(DAT_)
  640.  
  641. #-------------------------------------------------------------------------
  642. PROF:                        #PROFIELEルーチン(SELECTERから)。
  643. INPUT(H$,"ID or ハンドル名を正確に入力して下さい:","705.60")
  644. JUMPE(H$,"",SELECT0)        #ID等の指定がない場合。
  645. CAT(Y$," ")                    #Y$=PROF
  646. CAT(Y$,H$)                    #Y$=PROF ID
  647. SEND(Y$)
  648. SEND("\R")
  649. CALL(LOOP0)
  650. DELAYM(1500)                #同期調整。
  651. F$="SLECT0"
  652. GOTO(SELECT_)
  653.  
  654. #=========================================================================
  655. ETC4:                        #SELECTERから,自由行動選択の場合。
  656. INPUT(H$,"コマンドを正確に入力して下さい:","705.60")
  657. JUMPE(H$,"",SELECT0)        #コマンド入力がない場合。
  658. SEND(H$)
  659. SEND("\R")
  660. CALL(LOOP0)
  661. F$="ETC2"                    #戻り先指定フラグ。
  662. GOTO(SELECT_)
  663.  
  664. #=========================================================================
  665. DEF:                        #MAR.PADで指定した一行伝言の内容表示。
  666. PRINTCR("")
  667. PRINTCR("一行伝言に設定されているのは----")
  668. PRINTCR(X$)
  669. PRINTCR("----です。")
  670. F$="ETC"
  671. GOTO(SELECT_)                #プロンプト表示は待たない。
  672.  
  673. #=========================================================================
  674. ETC1:                        #SELECTERから,単純コマンド指定の場合。
  675. SEND(Y$)
  676. SEND("\R")
  677. CALL(LOOP0)
  678. F$="SELECT0"
  679. GOTO(SELECT_)
  680.  
  681. ETC0100:                    #未読情報一覧表示の場合(Bコマンド)。
  682. SEND(Y$)
  683. SEND("\R")
  684. CALL(LOOP0)
  685. F$="ETC3"
  686. GOTO(SELECT_)
  687.  
  688. #=========================================================================
  689. BCSEND:                        #SELECTERから,BC発言の場合。
  690. I$="BC"
  691. CAT(I$,H$,"\R")
  692. F$="BCSEND0"
  693.  
  694. BCSEND0:
  695. SEND(I$)
  696. CALL(LOOP0)
  697. INPUT(K$,"未読処理のみのときにはリターンでいいよ。","705.120")
  698. IFE(K$,"")                    #リターン処理をした場合。
  699.     K$="/E"
  700. CONVERT(OFF)
  701. SEND(K$)                    #入力内容を送信。
  702. CONVERT(ON)
  703. SEND("\R")
  704. JUMPE(K$,"/E",BCSENDE)        #入力がない場合。確認処理を飛ばす。
  705. CALL(LOOP0)
  706. SEND("\R")                    #確認。
  707.  
  708. BCSENDE:
  709. CALL(LOOP0)
  710. F$="SELECT0"
  711. GOTO(SELECT_)
  712.  
  713. #-------------------------------------------------------------------------
  714. BCREAD:                        #MAR.PADから,BC未読処理指定の場合。
  715. JUMPE(A$,"",DAT1)            #BC番号指定ミス。
  716. U$="BC"
  717. CAT(U$,A$,"\R")
  718. SEND(U$)
  719. CALL(LOOP0)
  720. SEND("/E")
  721. SEND("\R")
  722. CALL(LOOP0)
  723. GOTO(DAT_)
  724.  
  725. #-------------------------------------------------------------------------
  726. BCWRIT:                        #MAR.PADから,BC書き込み指定の場合。
  727. PICKWORD(D$,A$,E$)
  728. JUMPE(A$,"",DAT1)
  729. JUMPE(D$,"",DAT1)
  730. H$=A$
  731. U$="BC"
  732. CAT(U$,D$,"\R")
  733. SEND(U$)
  734. CALL(LOOP0)
  735. CONVERT(OFF)
  736. SEND(H$)
  737. CONVERT(ON)
  738. SEND("\R")
  739. CALL(LOOP0)
  740. SEND("\R")
  741. VCLEAR("H")
  742. CALL(LOOP0)
  743. GOTO(DAT_)
  744.  
  745. #=========================================================================
  746. GAME:
  747. SEND("GAME\R")
  748. F$="GAME0"                    #F$はLOOP1内で使用する移動先フラグ。
  749.  
  750. GAME0:
  751. L$=")>"                    #L$はLOOP1内で使用するプロンプト判断変数。
  752. CALL(LOOP1)
  753. GOTO(SELECT0)
  754.  
  755. #=========================================================================
  756. DL:
  757. H$="自由行動します。"
  758. I$="最新到着データを見ます。"
  759. SMENU(H$,I$)
  760. VSWITCH(H$)
  761.     CASE("0")
  762.         GOTO(SELECT0)
  763.     CASE("1")
  764.         GOTO(DL0)
  765.     CASE("2")
  766.         GOTO(DL1)
  767.     ELSE
  768.         GOTO(DL)
  769. END
  770.  
  771. DL0:
  772. SEND("DL\R")
  773. PRINTCR("")
  774. PRINTCR("□DL 終了は「Data>」のところで 「T」 or リターン です□")
  775. F$="DL00"
  776.  
  777. DL00:
  778. L$=")>"
  779. CALL(LOOP1)
  780. GOTO(DL)
  781.  
  782. #-------------------------------------------------------------------------
  783. DL1:                        #最新DLリスト取得ルーチン。
  784. F$="DL"
  785. SEND("DL\R")
  786. STIMEOUT(2)
  787. SWITCH
  788.     CASE("◆")
  789.         GOTO(SELECT_)        #DLに入る前。
  790. END
  791. CALL(LOOP0)
  792. SEND("N\R")
  793. CALL(LOOP0)
  794. SEND("T\R")
  795. CALL(LOOP0)
  796. GOTO(SELECT_)
  797.  
  798. #=========================================================================
  799. OFF1:                        #手動伝言書き込み終了処理。
  800. SEND("OFF\R")
  801. L$="\013\010:"
  802. F$="OFF2"
  803. C$="/C\R"                    #ここまでは,常にC$=C\R。
  804. CALL(LOOP1)
  805. SEND("\R")
  806. CALL(LOOP1)
  807.  
  808. OFF2:
  809. INPUT(A$,"一行伝言を入力して下さい。",705.120)
  810. CONVERT(OFF)
  811. SEND(A$)
  812. CONVERT(ON)
  813. SEND("\R")
  814. JUMPE(A$,"",OUT)
  815. JUMPE(A$,"/E",OUT)
  816. WAIT(":")
  817. SEND("\R")
  818. GOTO(OUT)
  819.  
  820. #-------------------------------------------------------------------------
  821. OFF4:                        #指定伝言書き込み終了処理。
  822. SEND("OFF\R")
  823. L$="\013\010:"
  824. F$="OFF5"
  825. C$="/C\R"
  826. CALL(LOOP1)
  827. SEND("\R")
  828. CALL(LOOP1)
  829.  
  830. OFF5:
  831. CONVERT(OFF)
  832. SEND(X$)                    #MAR.PAD指定一行伝言内容。
  833. CONVERT(ON)
  834. SEND("\R")
  835. JUMPE(X$,"/E",OUT)            #指定一行伝言が空白の場合。
  836. WAIT(":")
  837. SEND("\R")
  838. GOTO(OUT)
  839.  
  840. #-------------------------------------------------------------------------
  841. OUT:                        #マクロ終了処理。
  842. WAIT("切断します-")
  843. PRINTCR("")
  844. PRINTCR("")
  845. PRINTCR("                MACRO STOP! SEE YOU AGAIN!  (^o^)/゚")
  846. PRINTCR("")
  847. PRINTCR("")
  848. PRINTCR("                           また来てね!")
  849. LOGCLOSE
  850. EXIT                        #マクロ終了。
  851.  
  852. #=========================================================================
  853. ERROR:
  854. PRINTCR("□ごめんなさい! 送受信に失敗しちゃった! (;_;)□")
  855. DELAYM(500)
  856. SEND("\R")
  857. CALL(LOOP0)
  858. SEND("T\R")
  859. VCLEAR("HJKU")
  860. CALL(LOOP0)
  861. GOTO(DAT_)
  862.  
  863. #=========================================================================
  864. CHAT:
  865. WAIT("",1,CHAT)
  866. SEND(C$)                    #C$=C\R or /C\R
  867. CALL(CHAT0)
  868. RETURN
  869.  
  870. CHAT0:
  871. WAIT("",1,CHAT0)
  872. VCLEAR("A")
  873. INPUT(A$,"チャットは楽しいね。",705.120)
  874. IFE(A$,"")
  875.     CALL(CHATERR)
  876. CONVERT(OFF)
  877. SEND(A$)
  878. CONVERT(ON)
  879. SEND("\R")
  880. IFE(A$,"/E")
  881. RETURN
  882. GOTO(CHAT0)
  883.  
  884. CHATERR:
  885. SEND("自動運転中で,反応できないの。ごめんなさい。 m(_._)m\R")
  886.  
  887. CHATERR0:
  888. WAIT("",1,CHATERR0)
  889. A$="/E"
  890. RETURN
  891.  
  892. #-------------------------------------------------------------------------
  893. CHATS:
  894. WAIT("",1,CHATS)
  895. SEND("C\R")
  896.  
  897. CHATS0:
  898. WAIT("",1,CHATS0)
  899. INPUT(R$,"チャットは楽しいね。",705.120)
  900. CONVERT(OFF)
  901. SEND(R$)
  902. CONVERT(ON)
  903. SEND("\R")
  904. JUMPE(R$,"/E",CHATS1)
  905. JUMPE(R$,"/e",CHATS1)
  906. GOTO(CHATS0)
  907.  
  908. CHATS1:
  909. WAIT("",1,CHATS1)
  910. VCLEAR("R")
  911. GOTO(SELECT0)
  912.  
  913. CHA:
  914. SEND("\R")
  915. VSWITCH(F$)
  916.     CASE("OFF2")
  917.         CALL(CHAT)
  918.         GOTO(F$)
  919.     CASE("OFF5")
  920.         CALL(CHAT)
  921.         GOTO(F$)
  922.     CASE("GAME0")
  923.         GOTO(F$)
  924.     ELSE
  925.         GOTO(CHA00)
  926. END
  927.  
  928. CHA00:
  929. SWITCH
  930.     CASE(")>")
  931.         CALL(CHAT)
  932.         GOTO(F$)
  933.     CASE(":")
  934.         SEND("\R")
  935.         GOTO(CHA00)
  936.     CASE(":")
  937.         SEND("\R")
  938.         GOTO(CHA00)
  939. END
  940.  
  941. CHA1:
  942. SEND("0\R")
  943. WAIT(")>")
  944. CALL(CHAT)
  945. GOTO(SELECT0)
  946.  
  947. CHA2:
  948. SEND("2\R")
  949. WAIT("e:")
  950. SEND("0\R")
  951. WAIT(")>")
  952. CALL(CHAT)
  953. GOTO(SELECT0)
  954.  
  955. #=========================================================================
  956. LOOP0:                        #CHAT判断ルーチン(その1)。汎用。
  957. SWITCH
  958.     CASE("T{^。^`}ヨホホホ。")
  959.         GETCRTS(Z$,"0")
  960.         R$="C"
  961.         RETURN
  962.     CASE("+\013\010")
  963.         WAIT("",1,LOOP0)
  964.         RETURN
  965.     CASE("0\013\010")
  966.         WAIT("",1,LOOP0)
  967.         RETURN
  968.     CASE("い\013\010:")
  969.         WAIT(" ",1,LOOP0)
  970.         RETURN
  971.     CASE("\010:")
  972.         WAIT("",1,LOOP0)
  973.         RETURN
  974.     CASE("\010:")
  975.         WAIT("",1,LOOP0)
  976.         RETURN
  977.     CASE("名】:")
  978.         WAIT("",1,LOOP0)
  979.         RETURN
  980.     CASE(">")
  981.         GETCRTS(Z$,"0")
  982.         WAIT("",1,LOOP0)
  983.         RETURN
  984.     CASE("):")
  985.         WAIT("",1,LOOP0)
  986.         RETURN
  987.     CASE(":")
  988.         WAIT("",1,LOOP0)
  989.         RETURN
  990. END
  991. RETURN
  992.  
  993. #-------------------------------------------------------------------------
  994. LOOP1:                        #CHAT判断ルーチン(その2)。DL,GAMEとOFF処理。
  995. SWITCH
  996.     CASE("\013\010:CHAT{^。^`}ヨホホホ。")
  997.         CALL(CHA)
  998.     CASE("る:CHAT{^。^`}ヨホホホ。")
  999.         CALL(CHA2)
  1000.     CASE(":CHAT{^。^`}ヨホホホ。")
  1001.         CALL(CHA)
  1002.     CASE("e:CHAT{^。^`}ヨホホホ。")
  1003.         CALL(CHA1)
  1004.     CASE("T{^。^`}ヨホホホ。")
  1005.         GETCRTS(Z$,"0")        #Z$は居場所フラグ。
  1006.         CALL(CHA)
  1007.     CASE(L$)
  1008.         GETCRTS(Z$,"0")
  1009.         WAIT("",1,LOOP1)
  1010.         RETURN
  1011. END
  1012. RETURN
  1013.  
  1014. #=========================================================================
  1015. RETRY:
  1016. CALL(LOOP0)
  1017.  
  1018. RETRYD:                        #DLそのものに入れない場合。UPLOADでも使用。
  1019. PRINTCR("□指定ミスか,または,ゆえあって,DLには入れません□")
  1020. VCLEAR("HUYKS")
  1021. GOTO(DAT_)
  1022.  
  1023. #=========================================================================
  1024.